using System;
using ns27;
using Triton.Game.Mono;

namespace Triton.Game.Mapping
{
	[Attribute38("PlayErrors")]
	public class PlayErrors : MonoClass
	{
		public enum ErrorType
		{
			INVALID = -1,
			NONE,
			REQ_MINION_TARGET,
			REQ_FRIENDLY_TARGET,
			REQ_ENEMY_TARGET,
			REQ_DAMAGED_TARGET,
			REQ_MAX_SECRETS,
			REQ_FROZEN_TARGET,
			REQ_CHARGE_TARGET,
			REQ_TARGET_MAX_ATTACK,
			REQ_NONSELF_TARGET,
			REQ_TARGET_WITH_RACE,
			REQ_TARGET_TO_PLAY,
			REQ_NUM_MINION_SLOTS,
			REQ_WEAPON_EQUIPPED,
			REQ_ENOUGH_MANA,
			REQ_YOUR_TURN,
			REQ_NONSTEALTH_ENEMY_TARGET,
			REQ_HERO_TARGET,
			REQ_SECRET_ZONE_CAP,
			REQ_MINION_CAP_IF_TARGET_AVAILABLE,
			REQ_MINION_CAP,
			REQ_TARGET_ATTACKED_THIS_TURN,
			REQ_TARGET_IF_AVAILABLE,
			REQ_MINIMUM_ENEMY_MINIONS,
			REQ_TARGET_FOR_COMBO,
			REQ_NOT_EXHAUSTED_ACTIVATE,
			REQ_UNIQUE_SECRET_OR_QUEST,
			REQ_TARGET_TAUNTER,
			REQ_CAN_BE_ATTACKED,
			REQ_ACTION_PWR_IS_MASTER_PWR,
			REQ_TARGET_MAGNET,
			REQ_ATTACK_GREATER_THAN_0,
			REQ_ATTACKER_NOT_FROZEN,
			REQ_HERO_OR_MINION_TARGET,
			REQ_CAN_BE_TARGETED_BY_SPELLS,
			REQ_SUBCARD_IS_PLAYABLE,
			REQ_TARGET_FOR_NO_COMBO,
			REQ_NOT_MINION_JUST_PLAYED,
			REQ_NOT_EXHAUSTED_HERO_POWER,
			REQ_CAN_BE_TARGETED_BY_OPPONENTS,
			REQ_ATTACKER_CAN_ATTACK,
			REQ_TARGET_MIN_ATTACK,
			REQ_CAN_BE_TARGETED_BY_HERO_POWERS,
			REQ_ENEMY_TARGET_NOT_IMMUNE,
			REQ_ENTIRE_ENTOURAGE_NOT_IN_PLAY,
			REQ_MINIMUM_TOTAL_MINIONS,
			REQ_MUST_TARGET_TAUNTER,
			REQ_UNDAMAGED_TARGET,
			REQ_CAN_BE_TARGETED_BY_BATTLECRIES,
			REQ_STEADY_SHOT,
			REQ_MINION_OR_ENEMY_HERO,
			REQ_TARGET_IF_AVAILABLE_AND_DRAGON_IN_HAND,
			REQ_LEGENDARY_TARGET,
			REQ_FRIENDLY_MINION_DIED_THIS_TURN,
			REQ_FRIENDLY_MINION_DIED_THIS_GAME,
			REQ_ENEMY_WEAPON_EQUIPPED,
			REQ_TARGET_IF_AVAILABLE_AND_MINIMUM_FRIENDLY_MINIONS,
			REQ_TARGET_WITH_BATTLECRY,
			REQ_TARGET_WITH_DEATHRATTLE,
			REQ_TARGET_IF_AVAILABLE_AND_MINIMUM_FRIENDLY_SECRETS,
			REQ_SECRET_ZONE_CAP_FOR_NON_SECRET,
			REQ_TARGET_EXACT_COST,
			REQ_STEALTHED_TARGET,
			REQ_MINION_SLOT_OR_MANA_CRYSTAL_SLOT,
			REQ_MAX_QUESTS,
			REQ_TARGET_IF_AVAILABE_AND_ELEMENTAL_PLAYED_LAST_TURN,
			REQ_TARGET_NOT_VAMPIRE,
			REQ_TARGET_NOT_DAMAGEABLE_ONLY_BY_WEAPONS,
			REQ_NOT_DISABLED_HERO_POWER,
			REQ_MUST_PLAY_OTHER_CARD_FIRST,
			REQ_HAND_NOT_FULL,
			REQ_DRAG_TO_PLAY
		}

		public PlayErrors(IntPtr address, string className)
			: base(address, className)
		{
		}

		public PlayErrors(IntPtr address)
			: this(address, "PlayErrors")
		{
		}

		public static bool CanShowMinionTauntError()
		{
			return MonoClass.smethod_14<bool>(TritonHs.MainAssemblyPath, "", "PlayErrors", "CanShowMinionTauntError", Array.Empty<object>());
		}

		public static void DisplayTauntErrorEffects()
		{
			MonoClass.smethod_17(TritonHs.MainAssemblyPath, "", "PlayErrors", "DisplayTauntErrorEffects");
		}

		public static bool DoSpellsCostHealth()
		{
			return MonoClass.smethod_14<bool>(TritonHs.MainAssemblyPath, "", "PlayErrors", "DoSpellsCostHealth", Array.Empty<object>());
		}
	}
}
